
$(document).ready(function() {
    listar();
    cargarGeneros($("#inputGeneros"));
    cargarGeneros($("#inputActGeneros"));

    cargarPaises($("#inputPaises"), $("#inputCiudades"));
    cargarPaises($("#inputActPaises"), $("#inputActCiudades"));

    /* habilita y deshabilita el checkbox dependiendo de si esta o no 
     * seleccionado
     * */
    $("#modContrasenha").click(function(event) {
        controlCheckBox();
    });

    $(".cerrarVentanaEditar").click(function() {
        //hace que todos los campos del form se reseteen
        $("#actualizarForm")[0].reset();
        //hace que los mensajes e iconos de validación desaparezcan.
        $("#actualizarForm").data('bootstrapValidator').resetForm();

        controlCheckBox();
    });

    $('#agregarForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            nro_doc: {
                validators: {
                    notEmpty: {
                        message: 'El n&uacute;mero de documento no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El n&uacute;mero de documento debe tener como m&aacute;ximo 8 caracteres'
                    }
                }
            }, nombres: {
                validators: {
                    notEmpty: {
                        message: 'El nombre del usuario no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El nombre del usuario debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            apellidos: {
                validators: {
                    notEmpty: {
                        message: 'El apellido no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El apellido debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            fecha_inicio: {
                validators: {
                    notEmpty: {
                        message: 'La fecha inicial no puede estar vac&iacute;o'
                    }
                }
            },
            email: {
                validators: {
                    emailAddress: {
                        message: 'Email no v&aacute;lido'
                    }
                }
            },
            nro_telefono: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            nro_celular: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            peso: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            contrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La contrase&ntilde;a no puede estar vac&iacute;o'
                    },
                    different: {
                        field: 'usuarioAlias',
                        message: 'La contrase&ntilde;a no puede ser igual al alias'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'confirmarContrasenha',
                        message: 'La contrase&ntilde;a y el confirmar deben ser iguales'
                    }
                }
            },
            confirmarContrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La confirmaci&oacute;n no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'contrasenha',
                        message: 'La confirmaci&oacute;n y la contrase&ntilde;a deben ser iguales'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        agregar();

    });

    $('#actualizarForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            nro_doc: {
                validators: {
                    notEmpty: {
                        message: 'El n&uacute;mero de documento no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El n&uacute;mero de documento debe tener como m&aacute;ximo 8 caracteres'
                    }
                }
            }, nombres: {
                validators: {
                    notEmpty: {
                        message: 'El nombre del usuario no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El nombre del usuario debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            apellidos: {
                validators: {
                    notEmpty: {
                        message: 'El apellido no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 1,
                        max: 45,
                        message: 'El apellido debe tener como m&aacute;ximo 45 caracteres'
                    }
                }
            },
            fecha_inicio: {
                validators: {
                    notEmpty: {
                        message: 'La fecha inicial no puede estar vac&iacute;o'
                    }
                }
            },
            email: {
                validators: {
                    emailAddress: {
                        message: 'Email no v&aacute;lido'
                    }
                }
            },
            nro_telefono: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            nro_celular: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            peso: {
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'Se debe ingresar n&uacute;meros'
                    }
                }
            },
            contrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La contrase&ntilde;a no puede estar vac&iacute;o'
                    },
                    different: {
                        field: 'usuarioAlias',
                        message: 'La contrase&ntilde;a no puede ser igual al alias'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'confirmarContrasenha',
                        message: 'La contrase&ntilde;a y el confirmar deben ser iguales'
                    }
                }
            },
            confirmarContrasenha: {
                validators: {
                    notEmpty: {
                        message: 'La confirmaci&oacute;n no puede estar vac&iacute;o'
                    },
                    stringLength: {
                        min: 4,
                        message: 'La contrase&ntilde;a no puede tener menos de 4 caracteres'
                    },
                    identical: {
                        field: 'contrasenha',
                        message: 'La confirmaci&oacute;n y la contrase&ntilde;a deben ser iguales'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        actualizar();

    });

    //configuracion del formato
    $('#inputFechaNac').datepicker({
        format: "dd/mm/yyyy", // Notice the Extra space at the beginning
        viewMode: "years"
    });

    $('#inputActFechaNac').datepicker({
        viewMode: 'years',
        format: 'D/M/YYYY'
    });

    $("#inputPaises").change(function() {
        cargarCiudades($("#inputCiudades"), $(this).val());
    });

    $("#inputActPaises").change(function() {
        cargarCiudades($("#inputActCiudades"), $(this).val());
    });
    
    $( ".selectpicker" ).selectpicker();
});
var hacerLlamada = false;
function agregar() {
    var objeto = new Object();
    objeto.numDoc = $("#inputNroDoc").val();
    objeto.nombres = $("#inputNombres").val();
    objeto.apellidos = $("#inputApellidos").val();
    objeto.fechaNacimiento = $("#inputFechaNac").val();
    objeto.direccionCasa = $("#inputDireccionCasa").val();
    objeto.direccionTrabajo = $("#inputDireccionTrabajo").val();
    objeto.telefono = $("#inputNroTelefono").val();
    objeto.celular = $("#inputNroCelular").val();
    objeto.correo = $("#inputEmail").val();
    objeto.peso = $("#inputPeso").val();
    objeto.grupoSanguineo = $("#inputGrupoSangre").val();
//    objeto.url_imagen = url_imagen;
    objeto.idGenero = $("#inputGeneros").val();
    objeto.idCiudad = $("#inputCiudades").val();
    objeto.contrasenha = $("#inputContrasenha").val();
    objeto.confirmarContrasenha = $("#inputConfirmarContrasenha").val();

    $.ajax({
        url: '/EmergenciasWAR/doctores',
        dataType: 'json',
        type: 'POST',
        data: JSON.stringify(objeto),
        success: function(data) {
            console.log("Respuesta: " + data.estado);
            if (data.estado == "0") {
                bootbox.alert(data.mensaje);
                listar();

                //hace que todos los campos del form se reseteen
                $("#agregarForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#agregarForm").data('bootstrapValidator').resetForm();
                hacerLlamada=true;
            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonGuardar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no guardados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonGuardar").prop("disabled", false);
        }
    });
}

function actualizar() {
    var objeto = new Object();
    objeto.numDoc = $("#inputActNroDoc").val();
    objeto.nombres = $("#inputActNombres").val();
    objeto.apellidos = $("#inputActApellidos").val();
    objeto.fechaNacimiento = $("#inputActFechaNac").val();
    objeto.direccionCasa = $("#inputActDireccionCasa").val();
    objeto.direccionTrabajo = $("#inputActDireccionCasa").val();
    objeto.telefono = $("#inputActNroTelefono").val();
    objeto.celular = $("#inputActNroCelular").val();
    objeto.email = $("#inputActEmail").val();
    objeto.peso = $("#inputActPeso").val();
    objeto.grupoSanguineo = $("#inputActGrupoSangre").val();
    objeto.idGenero = $("#inputGeneros").val();
    objeto.idCiudad = $("#inputCiudades").val();
    //objeto.url_imagen = url_imagen;
    objeto.contrasenha = $("#inputActContrasenha").val();
    objeto.confirmarContrasenha = $("#inputActConfirmarContrasenha").val();

    $.ajax({
        url: '/EmergenciasWAR/doctores',
        dataType: 'json',
        type: 'put',
        data: JSON.stringify(objeto),
        success: function(data) {

            if (data.estado == "0") {
                bootbox.alert(data.mensaje);
                listar();

                //hace que todos los campos del form se reseteen
                $("#actualizarForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#actualizarForm").data('bootstrapValidator').resetForm();

                controlCheckBox();

                $('#myModal').modal('hide');
                $('#myModal').css("visibility", "hidden");
            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonActualizar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no actualizados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonActualizar").prop("disabled", false);
        }
    });
}

function listar() {
    $("#assigned-vm-table").find('tbody').empty();
    $.ajax({
        url: '/EmergenciasWAR/doctores',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            var row = "<tr class='warning'><th></th><th>Nombres</th><th>Apellidos</th><th>Nro. Documento</th><th>Fecha de Nacimiento</th><th>Direcci&oacute;n 1</th><th>Direcci&oacute;n 2</th><th>Tel&eacute;fono</th></th><th>Celular</th><th>Email</th><th>Peso</th><th>Grupo Sangu&iacute;neo</th><th>Fecha de Ingreso</th></tr>";
            var visible = "";
            if (data.estado == "0") {
                if (data.datos.length > 0) {
                    $.each(data.datos, function(i, item) {

                        row += "<tr id='" + item.idPersona + "'><td><a onclick='getDetalle($(this).parent().parent()," +
                                item.idPersona + "); ' title='Editar Fila'><i class='glyphicon glyphicon-edit'/> editar</a></td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.nombres + "'/>" +
                                item.nombres + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.apellidos + "'/>" +
                                item.apellidos + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.numDoc + "'/>" +
                                item.numDoc + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.fechaNacimiento + "'/>" +
                                item.fechaNacimiento + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.direccionCasa + "'/>" +
                                item.direccionCasa + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.direccionOficina + "'/>" +
                                item.direccionOficina + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.telefono + "'/>" +
                                item.telefono + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.celular + "'/>" +
                                item.celular + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.correo + "'/>" +
                                item.correo + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.peso + "'/>" +
                                item.peso + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.grupoSanguineo + "'/>" +
                                item.grupoSanguineo + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.fechaIngreso + "'/>" +
                                item.fechaIngreso + "</td>";

                    });
                } else {
                    row += "<tr><td>No existen doctores que listar.</td></tr>";
                }

            } else {
                row += "<tr><td>" + data.mensaje + "</td></tr>";

            }
            $("#assigned-vm-table").find('tbody').append(row);
        },
        error: function(a, b, c) {
            bootbox.alert("No se puede listar los doctores. Intente de nuevo");
        }

    });
}

function controlCheckBox() {
    if ($('#modContrasenha').is(':checked')) {
        $("#fieldsetModContrasenha").prop("disabled", false);
    } else {
        $("#actualizarForm").data('bootstrapValidator').resetForm();
        $("#buttonActualizar").prop("disabled", false);
        $("#fieldsetModContrasenha").prop("disabled", true);
        $("#inputActContrasenha").val("");
        $("#inputActConfirmarContrasenha").val("");
    }
}

function getDetalle(trId, transaccion) {

    var usuario = new Object();
    usuario.id_usuario = parseInt(transaccion);
    $.ajax({
        url: '/EmergenciasWAR/doctores/' + transaccion,
        dataType: 'json',
        type: 'get',        
        success: function(data) {
            if (data.estado == "0") {
                $("#inputActNroDoc").val(data.datos[0].numDoc);
                $("#inputActNombres").val(data.datos[0].nombres);
                $("#inputActApellidos").val(data.datos[0].apellidos);
                $("#inputActFechaNac").val(data.datos[0].fechaNacimiento);
                $("#inputActDireccionCasa").val(data.datos[0].direccionCasa);
                $("#inputActNroTelefono").val(data.datos[0].telefono);
                $("#inputActNroCelular").val(data.datos[0].celular);
                $("#inputActEmail").val(data.datos[0].correo);
                $("#inputActPeso").val(data.datos[0].peso);
                $("#inputActGrupoSangre").val(data.datos[0].grupoSanguineo);                

                //setea el combo con el valor traido de la db
                $('#inputGeneros option').prop('selected', false)
                        .filter('[value="' + data.datos[0].idGenero + '"]')
                        .prop('selected', true);

                //setea el combo de estado con el valor traido de la db
                $('#inputCiudades option').prop('selected', false)
                        .filter('[value="' + data.datos[0].idCiudad + '"]')
                        .prop('selected', true);

                //manda por debajo el id para luego poder modificar en la db
                $("#inputActIdDoctor").val(data.datos[0].idPersona);

                $('#myModal').modal('show');
                $('#myModal').css("visibility", "visible");
            } else {
                bootbox.alert(data.mensaje);
            }

        },
        error: function(a, b, c) {
            alert("Ocurrio un error. Intente de nuevo m&aacute;s tarde.");
        }

    });
}

function cargarGeneros(contexto) {

    $.ajax({
        url: '/EmergenciasWAR/generos',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idGenero + "'>" + item.descripcion + "</option>";
                });
                contexto.html(html);
                
                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarCiudades(contexto, idPais) {

    $.ajax({
        url: '/EmergenciasWAR/paises/ciudades/' + idPais,
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idCiudad + "'>" + item.descripcion + "</option>";
                });
                contexto.html(html);
                
                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarPaises(contextoPais, contextoCiudades) {

    $.ajax({
        url: '/EmergenciasWAR/paises',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            var idPais;
            if (data.estado == "0") {
                var html = '';
                idPais = data.datos[0].idPais;

                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idPais + "'>" + item.descripcion + "</option>";
                });

                contextoPais.html(html);

                cargarCiudades(contextoCiudades, idPais);
                
                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}